This relates to integrated circuits and in particular, to integrated circuits that perform error correction.
Integrated circuit devices are often used to transmit, read, and store information that is susceptive to corruption. In particular, when bits of data are stored or read from memory, processed using digital or analog circuitry, or transmitted from one device to another, some of these data bits can be inadvertently flipped due to electronic noise, physical variations on the die, or radiation. To address this problem, error-correcting codes (ECC) are often employed by adding extra bits to the data to be corrected. The extra bits (sometimes referred to as the “syndrome”) can be used to help detect and correct for errors in the data.
Examples of such error-correcting codes include Low-Density Parity Codes (LDPC), Bose-Chaudhuri-Hocquengham (BCH) Codes, and Turbo Codes. The implementation of such codes to protect against multiple random bit errors is rather complex and typically requires use of a separate processor such as a generic CPU or a microcontroller. In some cases, however, the data to be corrected contains secret information that must be protected, and passing the data to a generic processor or microcontroller may allow that secret information to be accessed by an unauthorized party.
One application that requires both error correction and secrecy is the implementation of a Physically Unclonable Function (PUF) circuit. A PUF circuit has behavior that is determined by random physical variations such as within the integrated circuit or within the environment of the integrated circuit. The variations may depend on operating temperature, operating voltage, stress-related changes in transistor characteristics such as due to negative bias threshold instability (NBTI), accumulated environmental radiation effects, thermal noise, or other sources of variations. Due to these variations, no two PUF circuits have the same output, and for this reason, PUF circuits are often used to help differentiate between integrated circuits that are otherwise identical.
One potential use of a PUF circuit is to generate or protect encryption keys. For example, the output of the PUF circuit might be directly used as an encryption key or may be used to mask an encryption key. However, since PUF circuits are based on random variations of the integrated circuits on which they are formed, the output of a PUF circuit may change if the variations change over time or if there is any noise present. Conventionally, the PUF circuit output may be fed to a generic processor or microcontroller that implements one of the ECC algorithms to correct for such changes. Correcting the PUF output in this way, however, exposes the PUF output (which is considered sensitive information) to potential attackers of the system.